home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 31 / Commodore_Disc_31_19xx_-_de.d64 / gelbe kugeln.64 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  10KB  |  585 lines

  1. 10 rem ========================64
  2. 20 rem (p) commodore welt      ==
  3. 30 rem ==========================
  4. 40 rem (c) by                  ==
  5. 50 rem     guenter kramer      ==
  6. 60 rem                         ==
  7. 70 rem version 2.0   40z./ascii==
  8. 80 rem  c-64  floppy/datasette ==
  9. 90 rem ==========================
  10. 95 gosub 60000
  11. 100 ifa=1then130
  12. 110 a=1
  13. 120 load"mp gelbe kugeln",8,1
  14. 130 gosub4740
  15. 140 gosub2920
  16. 150 gosub3130
  17. 160 gosub4180
  18. 170 gosub1160
  19. 180 gosub290
  20. 190 gosub5270
  21. 200 printchr$(147)
  22. 210 print"ein neues spiel?"s2$"(j/n)"
  23. 220 geta$
  24. 230 ifa$="n"thenend
  25. 240 ifa$<>"j"then220
  26. 250 run130
  27. 260 ********************
  28. 270 *** spiel laeuft ***
  29. 280 ********************
  30. 290 sn=1:bi=0
  31. 300 a=rnd(-ti)
  32. 310 gosub1710
  33. 320 gz=5:ru=1
  34. 330 goto370
  35. 340 sn=sn+1
  36. 350 ifsn>anthensn=1:ru=ru+1:bo=bo-60:gz=5
  37. 360 ifbo=0then1030
  38. 370 pokeze,0:pokesp,0:syscu
  39. 380 a$=str$(bi)
  40. 390 printchr$(154)a$". bild";
  41. 400 a$=str$(ru)
  42. 410 printtab(15)a$". runde";
  43. 420 a$=right$(chr$(32)+str$(bo),4)
  44. 430 printtab(28)"bonus ="a$
  45. 440 zf=int((10+2*an)*rnd(1))+2
  46. 450 a=ko(sn,0)
  47. 460 a0=ko(sn,1)
  48. 470 ifms(sn,2)=72then920
  49. 480 gosub2690
  50. 490 zu=1
  51. 500 poke198,0
  52. 510 gosub2480
  53. 520 ifei=32then630
  54. 530 ifei=29thena=a+1
  55. 540 ifei=157thena=a-1
  56. 550 ifei=145thena0=a0-1
  57. 560 ifei=17thena0=a0+1
  58. 570 ifa=0thena=1
  59. 580 ifa=7thena=6
  60. 590 ifa0=0thena0=1
  61. 600 ifa0=8thena0=7
  62. 610 gosub2690
  63. 620 goto510
  64. 630 @sma
  65. 640 ifru=1then840
  66. 650 ifzu<>zfthen840
  67. 660 ifan>1then760
  68. 670 gosub2190
  69. 680 @rc,2,31
  70. 690 a4=a:a5=a0
  71. 700 a=int(rnd(0)*6)+1
  72. 710 a0=int(rnd(0)*7)+1
  73. 720 gosub2190
  74. 730 a=a4:a0=a5
  75. 740 @rc,0,31
  76. 750 goto850
  77. 760 a4=sn
  78. 770 @rc,2,31
  79. 780 forsn=1toan
  80. 790 gosub2190
  81. 800 next
  82. 810 @rc,0,31
  83. 820 sn=a4
  84. 830 goto850
  85. 840 gosub2190
  86. 850 ko(sn,0)=a
  87. 860 ko(sn,1)=a0
  88. 870 zu=zu+1
  89. 880 ifms(sn,2)=72then910
  90. 890 ifzu>gzthen920
  91. 900 goto510
  92. 910 gz=zu-1
  93. 920 ms(sn,1)=ms(sn,1)+ms(sn,2)
  94. 930 gosub2800
  95. 940 ifsn<anthen340
  96. 950 en$="0"
  97. 960 forsn=1toan
  98. 970 ifms(sn,2)<72then1010
  99. 980 ms(sn,1)=ms(sn,1)+bo
  100. 990 gosub2800
  101. 1000 en$="1"
  102. 1010 next
  103. 1020 ifen$="0"then340
  104. 1030 sn=1
  105. 1040 ifbi<6then310
  106. 1050 pokeze,24:pokesp,10:syscu
  107. 1060 printchr$(153)"spielende";
  108. 1070 print"(return)"
  109. 1080 geta$
  110. 1090 ifa$<>chr$(13)then1080
  111. 1100 @end
  112. 1110 printchr$(147)
  113. 1120 return
  114. 1130 *********************
  115. 1140 *** sprites laden ***
  116. 1150 *********************
  117. 1160 @soa:@sua
  118. 1170 @sof,0
  119. 1180 @suf,0
  120. 1190 a1$=""
  121. 1200 a2$=""
  122. 1210 a3=0
  123. 1220 a$=chr$(32)+chr$(32)
  124. 1230 fori=1toan
  125. 1240 a0$=right$(str$(i),1)
  126. 1250 a0$=a$+a0$+a$
  127. 1260 ifi>4then1290
  128. 1270 a1$=a1$+a0$+chr$(32)
  129. 1280 goto1300
  130. 1290 a2$=a2$+a0$+chr$(32)
  131. 1300 next
  132. 1310 @rc,0,255
  133. 1320 a2=1:a1=5:a=1
  134. 1330 a$=a1$
  135. 1340 gosub3890
  136. 1350 a$=a2$
  137. 1360 a2=4:a1=1
  138. 1370 gosub3890
  139. 1380 a$=".....0"
  140. 1390 a$=a$+a$
  141. 1400 a$=a$+a$
  142. 1410 a$=left$(a$,len(a1$))
  143. 1420 a2=1:a1=14
  144. 1430 gosub3890
  145. 1440 a2=4:a1=10
  146. 1450 a$=left$(a$,len(a2$))
  147. 1460 gosub3890
  148. 1470 @sox,0:@sux,0
  149. 1480 fori=1to7step2
  150. 1490 a=i*40
  151. 1500 @sok,a,0,i
  152. 1510 @sok,a+24,0,i+1
  153. 1520 @suk,a,0,i
  154. 1530 @suk,a+24,0,i+1
  155. 1540 next
  156. 1550 @src,12
  157. 1560 @sre:@sma
  158. 1570 printchr$(147)
  159. 1580 a$="x"
  160. 1590 a2=2:a3=0
  161. 1600 @smf,0
  162. 1610 forj=1toan
  163. 1620 a1=3*j-2
  164. 1630 gosub3450
  165. 1640 @smk,80*j-60,65,j
  166. 1650 ifj>4then:@smk,80*j-380,145,j
  167. 1660 next
  168. 1670 return
  169. 1680 ******************
  170. 1690 *** neues bild ***
  171. 1700 ******************
  172. 1710 printchr$(147)
  173. 1720 bi=bi+1
  174. 1730 fori=1toan
  175. 1740 ko(i,0)=1
  176. 1750 ko(i,1)=1
  177. 1760 ms(i,2)=18
  178. 1770 next
  179. 1780 a$=chr$(119)+chr$(119)+chr$(119)
  180. 1790 a$=a$+chr$(113)+chr$(113)+a$
  181. 1800 a$=a$+chr$(32)+chr$(32)+a$
  182. 1810 a$=a$+chr$(32)+chr$(32)+a$
  183. 1820 a0$=a$
  184. 1830 ifan>3then1850
  185. 1840 a0$=left$(a$,an*10-2)
  186. 1850 fori=3to11
  187. 1860 pokeze,i:pokesp,1:syscu
  188. 1870 printchr$(158)a0$
  189. 1880 next
  190. 1890 a0$=a$
  191. 1900 ifan<5then1970
  192. 1910 ifan=8then1930
  193. 1920 a0$=left$(a$,(an-4)*10-2)
  194. 1930 fori=13to21
  195. 1940 pokeze,i:pokesp,1:syscu
  196. 1950 printchr$(158)a0$
  197. 1960 next
  198. 1970 forsn=1toan
  199. 1980 fork=1to10
  200. 1990 a=1+int(6*rnd(1))
  201. 2000 a0=1+int(7*rnd(1))
  202. 2010 gosub2190
  203. 2020 next
  204. 2030 a=2:a0=6:gosub2190
  205. 2040 a=5:a0=2:gosub2190
  206. 2050 pokeze,2
  207. 2060 pokesp,10*sn-9
  208. 2070 ifsn<5then2100
  209. 2080 pokeze,22
  210. 2090 pokesp,10*sn-49
  211. 2100 syscu
  212. 2110 printchr$(30)chr$(18)e$
  213. 2120 next
  214. 2130 sn=1
  215. 2140 bo=900
  216. 2150 return
  217. 2160 *********************
  218. 2170 *** setzen felder ***
  219. 2180 *********************
  220. 2190 fori=atoi+2
  221. 2200 forj=a0toj+2
  222. 2210 a1=40*j+i+70+10*sn
  223. 2220 ifsn>4thena1=a1+360
  224. 2230 a2=peek(f+a1)and15
  225. 2240 a3=peek(b+a1)
  226. 2250 ifa3=81then2310
  227. 2260 ifa2=7thenpokef+a1,10:goto2290
  228. 2270 ms(sn,2)=ms(sn,2)+1
  229. 2280 pokef+a1,7
  230. 2290 pokeb+a1,81
  231. 2300 goto2330
  232. 2310 ifa2=7thenms(sn,2)=ms(sn,2)-1
  233. 2320 pokeb+a1,87
  234. 2330 a$=str$(ms(sn,2))
  235. 2340 a$=right$(a$,2)
  236. 2350 pokeze,2
  237. 2360 pokesp,10*sn-3
  238. 2370 ifsn<5then2400
  239. 2380 pokeze,22
  240. 2390 pokesp,10*sn-43
  241. 2400 syscu
  242. 2410 printchr$(159)a$
  243. 2420 nextj,i
  244. 2430 e$=e$(ms(sn,0))
  245. 2440 return
  246. 2450 ************************
  247. 2460 *** eingabe abfragen ***
  248. 2470 ************************
  249. 2480 ei=0
  250. 2490 geta$
  251. 2500 @sme,sn
  252. 2510 ifms(sn,0)<3then2550
  253. 2520 ifa$=""then2640
  254. 2530 ei=asc(a$)
  255. 2540 goto2640
  256. 2550 poke56322,224
  257. 2560 a2=peek(56320)
  258. 2570 ifms(sn,0)=1thena2=peek(56321)
  259. 2580 poke56322,255
  260. 2590 if(a2and1)=0thenei=145
  261. 2600 if(a2and2)=0thenei=17
  262. 2610 if(a2and4)=0thenei=157
  263. 2620 if(a2and8)=0thenei=29
  264. 2630 if(a2and16)=0thenei=32
  265. 2640 ifei=0then2490
  266. 2650 return
  267. 2660 **********************
  268. 2670 *** bewegen sprite ***
  269. 2680 **********************
  270. 2690 a1=80*sn-68+8*a
  271. 2700 a2=57
  272. 2710 ifsn<5then2740
  273. 2720 a1=a1-320
  274. 2730 a2=137
  275. 2740 a2=a2+8*a0
  276. 2750 @smk,a1,a2,sn
  277. 2760 return
  278. 2770 ************************
  279. 2780 *** zaehler anzeigen ***
  280. 2790 ************************
  281. 2800 a$=str$(ms(sn,1))
  282. 2810 a$=right$(a$,len(a$)-1)
  283. 2820 a$=right$("....."+a$,6)
  284. 2830 a2=1:a1=14:a3=0
  285. 2840 ifsn>4thena2=4
  286. 2850 a=sn*6-5
  287. 2860 ifsn>4thena=a-24:a1=10
  288. 2870 gosub3890
  289. 2880 return
  290. 2890 ********************
  291. 2900 *** anfangswerte ***
  292. 2910 ********************
  293. 2920 sys12*4096
  294. 2930 @rf,0:@rc,4,255
  295. 2940 @rc,3,31:@re:@saa:@saf,0
  296. 2950 printchr$(150)chr$(147)
  297. 2960 printchr$(158)
  298. 2970 b=52224:      rem bildspeicher
  299. 2980 f=55296:      rem farbspeicher
  300. 2990 cu=58640:     rem cursorsteuerung
  301. 3000 ze=214:       rem cursorzeile
  302. 3010 sp=211:       rem cursorspalte
  303. 3020 si=54272:     rem sid
  304. 3030 dime$(3):     rem eingabe
  305. 3040 dimms(8,2):   rem spielerwerte
  306. 3050 dimko(8,1):   rem koordinaten
  307. 3060 e$(1)="joy-1"
  308. 3070 e$(2)="joy-2"
  309. 3080 e$(3)="taste"
  310. 3090 return
  311. 3100 *****************
  312. 3110 *** titelbild ***
  313. 3120 *****************
  314. 3130 a$="gelbe kugeln"
  315. 3140 a1=1:a2=7:a3=128
  316. 3150 gosub3450
  317. 3160 a=2:a1=8:a2=7
  318. 3170 gosub3890
  319. 3180 a=int(len(a$)/2):a1=176-8*a
  320. 3190 @src,3:@smc,3:@srx,1:@sry,1
  321. 3200 @srk,168-8*len(a$)
  322. 3210 @smk,a1,67:@soe:@sme
  323. 3220 pokeze,3:pokesp,20-a:syscu
  324. 3230 printa$
  325. 3240 fori=1to200:next
  326. 3250 pokeze,7:pokesp,12:syscu
  327. 3260 print"ein programm von"
  328. 3270 fori=1to200:next
  329. 3280 fori=67to200
  330. 3290 @smk,a1,i
  331. 3300 next
  332. 3310 @sma:@sue
  333. 3320 @smf,0:a$="guenter kramer"
  334. 3330 a1=1:a2=2:a3=0:@sme
  335. 3340 @smx,1:@smy,1
  336. 3350 @smk,56,92
  337. 3360 gosub3450
  338. 3370 a=2:a2=2:a1=14
  339. 3380 gosub3890
  340. 3390 @rc,2,56
  341. 3400 @rc,14,31
  342. 3410 return
  343. 3420 *********************
  344. 3430 *** rahmen setzen ***
  345. 3440 *********************
  346. 3450 a=len(a$)
  347. 3460 if(a2and1)=1thengosub3530
  348. 3470 if(a2and2)=2thengosub3650
  349. 3480 if(a2and4)=4thengosub3770
  350. 3490 return
  351. 3500 *******************
  352. 3510 *** oberer rand ***
  353. 3520 *******************
  354. 3530 fori=1+a1toa+a1
  355. 3540 @sob,64+a3,1,i:next
  356. 3550 @sob,73+a3,1,i:@sob,66+a3,9,i
  357. 3560 @sob,75+a3,14,i
  358. 3570 fori=a+a1to1+a1step-1
  359. 3580 @sob,64+a3,14,i:next
  360. 3590 @sob,74+a3,14,i
  361. 3600 @sob,66+a3,9,i:@sob,85+a3,1,i
  362. 3610 return
  363. 3620 ****fn****************
  364. 3630 *** mittelsprites ***
  365. 3640 *******************
  366. 3650 fori=1+a1toa+a1
  367. 3660 @smb,64+a3,1,i:next
  368. 3670 @smb,73+a3,1,i:@smb,66+a3,9,i
  369. 3680 @smb,75+a3,14,i
  370. 3690 fori=a+a1to1+a1step-1
  371. 3700 @smb,64+a3,14,i:next
  372. 3710 @smb,74+a3,14,i
  373. 3720 @smb,66+a3,9,i:@smb,85+a3,1,i
  374. 3730 return
  375. 3740 ********************
  376. 3750 *** unterer rand ***
  377. 3760 ********************
  378. 3770 fori=1+a1toa+a1
  379. 3780 @sub,64+a3,1,i:next
  380. 3790 @sub,73+a3,1,i:@sub,66+a3,9,i
  381. 3800 @sub,75+a3,14,i
  382. 3810 fori=a+a1to1+a1step-1
  383. 3820 @sub,64+a3,14,i:next
  384. 3830 @sub,74+a3,14,i
  385. 3840 @sub,66+a3,9,i:@sub,85+a3,1,i
  386. 3850 return
  387. 3860 *******************
  388. 3870 *** text setzen ***
  389. 3880 *******************
  390. 3890 iflen(a$)=0then3930
  391. 3900 if(a2and1)=1thengosub3970
  392. 3910 if(a2and2)=2thengosub4040
  393. 3920 if(a2and4)=4thengosub4110
  394. 3930 return
  395. 3940 *****************
  396. 3950 *** text oben ***
  397. 3960 *****************
  398. 3970 fori=0tolen(a$)-1
  399. 3980 a4=asc(mid$(a$,i+1,1))and63
  400. 3990 @sob,a4+a3,a1,a+i:next
  401. 4000 return
  402. 4010 ******************
  403. 4020 *** text mitte ***
  404. 4030 ******************
  405. 4040 fori=0tolen(a$)-1
  406. 4050 a4=asc(mid$(a$,i+1,1))and63
  407. 4060 @smb,a4+a3,a1,a+i:next
  408. 4070 return
  409. 4080 ******************
  410. 4090 *** text unten ***
  411. 4100 ******************
  412. 4110 fori=0tolen(a$)-1
  413. 4120 a4=asc(mid$(a$,i+1,1))and63
  414. 4130 @sub,a4+a3,a1,a+i:next
  415. 4140 return
  416. 4150 **************
  417. 4160 *** anfang ***
  418. 4170 **************
  419. 4180 printchr$(150)
  420. 4190 pokeze,12:pokesp,10:syscu
  421. 4200 print"wieviele mitspieler?"
  422. 4210 print
  423. 4220 print"1 = joystick 1"
  424. 4230 print"2 = joystick 2"
  425. 4240 print"3 = tastatur"
  426. 4250 print
  427. 4260 print"0 = spiel beginnt"
  428. 4270 print"9 = high score"
  429. 4280 pokeze,14:pokesp,10:syscu
  430. 4290 an=0
  431. 4300 an=an+1
  432. 4310 printtab(19)"spieler"an" = ";
  433. 4320 poke204,0
  434. 4330 poke198,0
  435. 4340 geta$
  436. 4350 ifa$="0"then4440
  437. 4360 ifa$="9"then4470
  438. 4370 ifa$<"1"then4340
  439. 4380 ifa$>"3"then4340
  440. 4390 ms(an,0)=val(a$)
  441. 4400 poke204,1
  442. 4410 printe$(ms(an,0))
  443. 4420 ifan<8then4300
  444. 4430 goto4550
  445. 4440 ifan=1then4340
  446. 4450 an=an-1
  447. 4460 goto4550
  448. 4470 @rc,0,255
  449. 4480 @sma
  450. 4490 poke204,1
  451. 4500 gosub5020
  452. 4510 @rc,2,56
  453. 4520 @rc,14,31
  454. 4530 printchr$(150)chr$(147)
  455. 4540 goto4620
  456. 4550 poke204,1
  457. 4560 print"-"
  458. 4570 printtab(19)"in ordnung? ";
  459. 4580 poke204,0
  460. 4590 geta$
  461. 4600 ifa$="j"then4680
  462. 4610 ifa$<>"n"then4590
  463. 4620 poke204,1
  464. 4630 fori=12to24
  465. 4640 poke781,i
  466. 4650 sys59903
  467. 4660 next
  468. 4670 goto4180
  469. 4680 poke204,1
  470. 4690 printa$
  471. 4700 return
  472. 4710 ***********************
  473. 4720 *** lesen highscore ***
  474. 4730 ***********************
  475. 4740 open15,8,15
  476. 4750 open3,8,3,"0:h.s. kugeln,u,r"
  477. 4760 input#15,a,a$,a0,a1
  478. 4770 ifa=0thenhs=1:goto4880
  479. 4780 close3:close15
  480. 4790 printchr$(147)a;a$;a0;a1
  481. 4800 print"wenn highscore vorhanden,"
  482. 4810 print"diskette einlegen und"
  483. 4820 print"'j' eingeben."
  484. 4830 print"sonst 'n' eingeben."
  485. 4840 geta$
  486. 4850 ifa$="j"then4740
  487. 4860 ifa$<>"n"then4840
  488. 4870 hs=0
  489. 4880 dimhs$(20),hs(20)
  490. 4890 a$="    "
  491. 4900 a=0
  492. 4910 fori=1to20
  493. 4920 ifhs=0then4940
  494. 4930 input#3,a$,a
  495. 4940 hs$(i)=a$
  496. 4950 hs(i)=a
  497. 4960 next
  498. 4970 close3:close15
  499. 4980 return
  500. 4990 **************************
  501. 5000 *** anzeigen highscore ***
  502. 5010 **************************
  503. 5020 printchr$(159)chr$(147)
  504. 5030 printspc(15)"ehrentafel"
  505. 5040 print:print
  506. 5050 a$=""
  507. 5060 fori=1to7
  508. 5070 a$=a$+chr$(32)
  509. 5080 next
  510. 5090 fori=1to10
  511. 5100 a0$=right$(a$+str$(hs(i)),7)
  512. 5110 a1$=right$(a$+str$(hs(i+10)),7)
  513. 5120 ifhs(i)=0thena0$=a$
  514. 5130 ifhs(i+10)=0thena1$=a$
  515. 5140 printspc(6)hs$(i)spc(1)a0$;
  516. 5150 printspc(1)chr$(122)chr$(122);
  517. 5160 printspc(1)hs$(i+10)spc(1)a1$
  518. 5170 next
  519. 5180 pokeze,22:pokesp,0:syscu
  520. 5190 print"weiter = return"
  521. 5200 poke198,0
  522. 5210 geta$
  523. 5220 ifa$<>chr$(13)then5210
  524. 5230 return
  525. 5240 ************************
  526. 5250 *** update highscore ***
  527. 5260 ************************
  528. 5270 pokeze,10:pokesp,13:syscu
  529. 5280 print"namen eingeben"
  530. 5290 print
  531. 5300 fori=1toan
  532. 5310 ifms(i,1)<hs(20)then5530
  533. 5320 a0$=""
  534. 5330 poke198,0
  535. 5340 printspc(13)"spieler"i" = ";
  536. 5350 forj=1to4
  537. 5360 geta$
  538. 5370 ifa$=chr$(13)thenj=4:goto5420
  539. 5380 ifa$<chr$(35)then5360
  540. 5390 ifa$>chr$(90)then5360
  541. 5400 printa$;
  542. 5410 a0$=a0$+a$
  543. 5420 next
  544. 5430 forj=19to1step-1
  545. 5440 hs$(j+1)=hs$(j)
  546. 5450 hs(j+1)=hs(j)
  547. 5460 a=j+1
  548. 5470 ifms(i,1)>hs(j)thena=j
  549. 5480 hs(a)=ms(i,1)
  550. 5490 hs$(a)=left$(a0$+"    ",4)
  551. 5500 ifa<>jthenj=0
  552. 5510 next
  553. 5520 print
  554. 5530 next
  555. 5540 gosub5020
  556. 5550 printchr$(147)
  557. 5560 ifhs=0then5600
  558. 5570 open1,8,15
  559. 5580 print#1,"s:h.s. kugeln"
  560. 5590 close1
  561. 5600 open15,8,15
  562. 5610 open3,8,3,"0:h.s. kugeln,u,w"
  563. 5620 poke198,0
  564. 5630 input#15,a,a$,a0,a1
  565. 5640 ifa=0then5740
  566. 5650 close3:close15
  567. 5660 printchr$(147)a;a$;a0;a1
  568. 5670 print"wenn highscore gewuenscht,"
  569. 5680 print"diskette einlegen und"
  570. 5690 print"'j' eingeben."
  571. 5700 print"sonst 'n' eingeben."
  572. 5710 geta$:ifa$="n"then5790
  573. 5720 ifa$="j"then5570
  574. 5730 goto5710
  575. 5740 fori=1to20
  576. 5750 ifhs(i)=0thenhs$(i)="    "
  577. 5760 print#3,hs$(i);chr$(13);hs(i)
  578. 5770 next
  579. 5780 close3:close15
  580. 5790 return
  581. 60000 rem nachspann ===============
  582. 60010 rem *** zeichensatz/graphik *
  583. 60020 s2$=chr$(160)
  584. 60030 return
  585.